<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>satstress</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th bgcolor="#70b0f0" class="navbar-select"
          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://code.google.com/p/satstress">satstress</a></th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        Package&nbsp;satstress
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="satstress-module.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== PACKAGE DESCRIPTION ==================== -->
<h1 class="epydoc">Package satstress</h1><p class="nomargin-top"><span class="codelink"><a href="satstress-pysrc.html">source&nbsp;code</a></span></p>
<p>Tools for analysing the relationship between tidal stresses and 
  tectonics on icy satellites.</p>
  <p>Written by <a href="http://zaneselvans.org" target="_top">Zane 
  Selvans</a> (<code><a href="mailto:zane.selvans@colorado.edu" 
  target="_top">zane.selvans@colorado.edu</a></code>) as part of his Ph.D. 
  dissertation research.</p>
  <p><code>satstress</code> is released under GNU General Public License 
  (GPL) version 3.  For the full text of the license, see: <a 
  href="http://www.gnu.org/" target="_top">http://www.gnu.org/</a></p>
  <p>The project is hosted at Google Code: <a 
  href="http://code.google.com/p/satstress" 
  target="_top">http://code.google.com/p/satstress</a></p>
  <h1 class="heading">1 Installation</h1>
    <p>Hopefully getting <code>satstress</code> to work on your system is a
    relatively painless process, however, the software does assume you have
    basic experience with the Unix shell and programming within a Unix 
    environment (though it should work on Windows too).  In particular, 
    this installation information assumes you already have and are able to 
    use:</p>
    <ul>
      <li>
        compilers for both C and Fortran.  Development has been done on Mac
        OS X (10.5) using the GNU compilers <code>gcc</code> and 
        <code>g77</code>, so those should definitely work.  On other 
        systems, with other compilers, your mileage may vary.
      </li>
      <li>
        the <code>make</code> utility, which manages dependencies between 
        files.
      </li>
    </ul>
    <h2 class="heading">1.1 Other Required and Recommended Software</h2>
      <p>To get the <a href="satstress.satstress-module.html" 
      class="link">satstress</a> package working, you'll need to install 
      some other (free) software first:</p>
      <ul>
        <li>
          <b>Python 2.5</b> or later (<a href="http://www.python.org" 
          target="_top">http://www.python.org</a>).  If you're running a 
          recent install of Linux, or Apple's Leopard operating system (OS 
          X 10.5.x), you already have this.  Python is also available for 
          Microsoft Windows, and just about any other platform you can 
          think of.
        </li>
        <li>
          <b>SciPy</b> (<a href="http://www.scipy.org" 
          target="_top">http://www.scipy.org</a>), a collection of 
          scientific libraries that extend the capabilities of the Python 
          language.
        </li>
      </ul>
      <p>In addition, if you want to use <a 
      href="satstress.gridcalc-module.html" class="link">gridcalc</a>, 
      you'll need:</p>
      <ul>
        <li>
          <b>netCDF</b> (<a 
          href="http://www.unidata.ucar.edu/software/netcdf/" 
          target="_top">http://www.unidata.ucar.edu/software/netcdf/</a>), 
          a library of routines for storing, retrieving, and annotating 
          regularly gridded multi-dimensional datasets.  Developed by <a 
          href="http://www.unidata.ucar.edu" target="_top">Unidata</a>
        </li>
        <li>
          <b>netcdf4-python</b> (<a 
          href="http://code.google.com/p/netcdf4-python/" 
          target="_top">http://code.google.com/p/netcdf4-python/</a>), a 
          Python interface to the netCDF library.
        </li>
      </ul>
      <p>If you want to actually view <a 
      href="satstress.gridcalc-module.html" class="link">gridcalc</a> 
      output, you'll need a netCDF file viewing program.  Many commercial 
      software packages can read netCDF files, such as ESRI ArcGIS and 
      Matlab.  A simple and free reader for OS X is <a 
      href="http://www.giss.nasa.gov/tools/panoply/" 
      target="_top">Panoply</a>, from NASA.  If you want to really be able 
      to interact with the outputs from this model, you should install and 
      get familiar with:</p>
      <ul>
        <li>
          <b>Matplotlib/Pylab</b> (<a 
          href="http://matplotlib.sourceforge.net/" 
          target="_top">http://matplotlib.sourceforge.net/</a>), a 
          Matlab-like interactive plotting and analysis package, which uses
          Python as its &quot;shell&quot;.
        </li>
      </ul>
    <h2 class="heading">1.2 Building and Installing satstress</h2>
      <p>Once you have the required software prerequisites installed, 
      uncompress and unarchive the satstress distribution:</p>
<pre class="literalblock">
   tar -xvzf satstress-X.Y.Z.tar.gz
</pre>
      <p>then go into the distribution directory created:</p>
<pre class="literalblock">
   cd satstress-X.Y.Z
</pre>
      <p>To build and test the package, run:</p>
<pre class="literalblock">
   make test
</pre>
      <p>If the test cases pass, go ahead and install with:</p>
<pre class="literalblock">
   make install
</pre>
      <p>And you'll be able to write your own Python programs using the 
      <code>satstress</code> library.</p>
      <p>If you're not using the GNU Fortran 77 compiler <code>g77</code>, 
      you'll need to edit the <code>Makefile</code> for the Love number 
      code:</p>
<pre class="literalblock">
   satstress/love/john_wahr/Makefile
</pre>
      <p>and tell it what Fortran compiler it ought to be using.</p>
      <p>If you have any trouble getting <code>satstress</code> working, 
      feel free to post to the satstress discussion board: <a 
      href="http://groups.google.com/group/satstress" 
      target="_top">http://groups.google.com/group/satstress</a></p>
  <h1 class="heading">2 Design Overview</h1>
    <p>A few notes on the general architecture of the 
    <code>satstress</code> package.</p>
    <h2 class="heading">2.1 Who is the Audience?</h2>
      <p>In writing this software and documentation, my hope is that an 
      undergraduate research assistant who has been hired for the summer, 
      and who has at least some experience with programming (though not 
      necessarily in Python), should be able to understand how the system 
      works, and make fruitful use of it.  So if it seems like things are 
      sometimes over-explained or over-commented, that's why.</p>
    <h2 class="heading">2.2 A Toolkit, not a Program</h2>
      <p>The <code>satstress</code> package is not itself a stand-alone 
      program (or not much of one anyway).  Instead it is a set of tools 
      with which you can build programs that need to know about the 
      stresses on the surface of a satellite, and how they compare to 
      tectonic features, so you can do your own hypothesizing and 
      testing.</p>
    <h2 class="heading">2.3 Object Oriented</h2>
      <p>The package attempts to make use of <a 
      href="http://en.wikipedia.org/wiki/Object-oriented_programming" 
      target="_top">object oriented programming</a> (OOP) in order to 
      maximize the re-usability and extensibility of the code.  Many 
      scientists are more familiar with the <a 
      href="http://en.wikipedia.org/wiki/Imperative_programming" 
      target="_top">imperative programming style</a> of languages like 
      Fortran and C, but as more data analysis and hypothesis testing takes
      place inside computers, and as many scientists become highly 
      specialized and knowledgeable software engineers (even if they don't 
      want to admit it), the advantages of OOP become significant.  If the 
      object orientation of this module seems odd at first glance, don't 
      despair, it's worth learning.</p>
    <h2 class="heading">2.4 Written in Python</h2>
      <p><a href="http://www.python.org" target="_top">Python</a> is a 
      general purpose, high-level scripting language.  It is an interpreted
      language (as opposed to compiled languages like Fortran or C) and so 
      Python code is very portable, meaning it is usable on a wide variety 
      of computing platforms without any alteration.  It is relatively easy
      to learn and easy to read, and it has a very active development 
      community.  It also has a large base of friendly, helpful scientific 
      users and an enormous selection of pre-existing libraries designed 
      for scientific applications.  For those tasks which are particularly 
      computationally intensive, Python allows you to extend the language 
      with code written in C and Fortran.  Python is also <a 
      href="http://www.gnu.org/philosophy/free-sw.html" target="_top">Free 
      Software</a>.  If you are a scientist and you write code, Python is a
      great choice.</p>
    <h2 class="heading">2.5 Open Source</h2>
      <p>Because science today is intimately intertwined with computation, 
      it is important for researchers to share the code that their 
      scientific results are based on.  No matter how elegant and accurate 
      your derivation is, if your implementation of the model in code is 
      wrong, your results will be flawed. As our models and hypotheses 
      become more complex, our code becomes vital primary source material, 
      and it needs to be open to peer review.  Opening our source:</p>
      <ul>
        <li>
          allows bugs to be found and fixed more quickly
        </li>
        <li>
          facilitates collaboration and interoperability
        </li>
        <li>
          reduces duplicated effort
        </li>
        <li>
          enhances institutional memory
        </li>
        <li>
          encourages better software design and documentation
        </li>
      </ul>
      <p>Of course, it also means that other people can use our code to 
      write their own scientific papers, but <i>that is the fundamental 
      nature of science</i>.  We are all &quot;standing on the shoulders of
      giants&quot;.  Nobody re-derives quantum mechanics when they just 
      want to do a little spectroscopy.  Why should we all be re-writing 
      each others code <i>ad nauseam</i>?  Opening scientific source code 
      will ultimately increase everyone's productivity.  Additionally, a 
      great deal of science is funded by the public, and our code is a 
      major product of that funding.  It is unethical to make it 
      proprietary.</p>

<hr />
<div class="fields">      <p><strong>Version:</strong>
        0.1.2
      </p>
      <p><strong>Date:</strong>
        Tue Apr  8 03:40:58 2008
      </p>
      <p><strong>Author:</strong>
        Zane Selvans
      </p>
      <p><strong>Contact:</strong>
        zane.selvans@colorado.edu
      </p>
      <p><strong>Copyright:</strong>
        2007-2008 Zane Selvans
      </p>
      <p><strong>License:</strong>
        http://www.gnu.org/licenses/gpl.html
      </p>
</div><!-- ==================== SUBMODULES ==================== -->
<a name="section-Submodules"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td align="left" colspan="2" class="table-header">
    <span class="table-header">Submodules</span></td>
</tr>
  <tr><td class="summary">
  <ul class="nomargin">
    <li> <strong class="uidlink"><a href="satstress.gridcalc-module.html">satstress.gridcalc</a></strong>: <em class="summary">Calculate stresses on an icy satellite over a rectangular 
        geographic region on a regularly spaced lat-lon grid.</em>    </li>
    <li> <strong class="uidlink"><a href="satstress.satstress-module.html">satstress.satstress</a></strong>: <em class="summary">A framework for calculating the surface stresses at a particular 
        place and time on a satellite resulting from one or more tidal 
        potentials.</em>    </li>
  </ul></td></tr>
</table>

<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th bgcolor="#70b0f0" class="navbar-select"
          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://code.google.com/p/satstress">satstress</a></th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Mon Apr  7 20:41:00 2008
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>
